resource "aws_lb_listener_rule"
code:例.tf(rb)
resource "aws_lb_listener_rule" "asg" {
listener_arn = aws_lb_listener.http.arn
priority = 100
condition {
path_pattern {
}
}
action {
type = "forward"
target_group_arn = aws_lb_target_group.asg.arn
}
}
これはそのまま転送してるだけ
GPT-4.icon
ALBのリスナーに、条件付きのルーティングルールを追加するためのリソースです。
リスナーは「ポートに来たリクエストのデフォルト処理」を定義するものですが、
リスナールールは「特定のパス、ホスト、HTTPヘッダーなどの条件でルーティングを分岐」させる設定です。
✅ 基本イメージ
code:text
リクエスト
↓
├─ Rule: パスが /api → API サーバへ転送
├─ Rule: パスが /static → 静的サイトへ転送
└─ Default → フロントエンドへ転送
🎯 主な用途
パスベースルーティング(例:/api → API サーバ)
ホストベースルーティング(例:api.example.com → API サーバ)
ヘッダーやメソッド条件でのルーティング
優先度付きルールの定義
🔍 基本構造
code:hcl(rb)
resource "aws_lb_listener_rule" "example" {
listener_arn = aws_lb_listener.example.arn
priority = 100
action {
type = "forward"
target_group_arn = aws_lb_target_group.api.arn
}
condition {
path_pattern {
}
}
}
🎯 重要パラメータ
table:_
パラメータ 説明
listener_arn 紐付けるリスナーの ARN
priority ルールの優先順位(数値が小さいほど優先)
action ルールにマッチしたときの処理(forward、redirect、fixed-response など)
condition ルーティング条件(パス、ホスト、HTTPヘッダー、クエリ文字列 など)
✅ よく使う condition の種類
table:_
condition 説明
path_pattern リクエストパスに基づくルーティング(例:/api/*)
host_header ホスト名に基づくルーティング(例:api.example.com)
http_header HTTPヘッダー値によるルーティング
http_request_method GET, POST など HTTPメソッドによる分岐
query_string クエリパラメータによるルーティング
source_ip 送信元 IP アドレスによるルーティング(ALBではやや特殊)
💡 複数条件の例
code:hcl(rb)
resource "aws_lb_listener_rule" "complex" {
listener_arn = aws_lb_listener.example.arn
priority = 200
action {
type = "forward"
target_group_arn = aws_lb_target_group.admin.arn
}
condition {
host_header {
}
}
condition {
path_pattern {
}
}
}
📝 これは「ホストが admin.example.com で、パスが /dashboard/* の場合に適用する」というルール。
🔁 複数ターゲットグループへのルーティングも可能
code:hcl(rb)
action {
type = "forward"
forward {
target_group {
arn = aws_lb_target_group.api.arn
weight = 80
}
target_group {
arn = aws_lb_target_group.frontend.arn
weight = 20
}
}
}
※ウェイトで 簡易な A/B テスト も可能。